package com.sann.factory;

import com.sann.entity.Color;
import org.springframework.beans.factory.FactoryBean;

/**
 * 测试注入第三方 Bean的4种方式之方式四：通过实现 Spring 的 FactoryBean 工厂Bean，
 * 这样MainConfig里面@Bean注解将来就将这个Factory里面注册的Bean给加载进容器.
 * 重写里面的 getObject()返回值即为要往 Spring 中注入的 Bean 类型；
 * 重写里面的 getObjectType() 返回值即为注册的 Bean 的 Class 字节码对象；
 * 重写里面的 isSingleton() 控制 Bean 的作用域范围，true是默认实现，表示注册的 Bean是单实例的；
 */
public class ColorFactoryBean implements FactoryBean<Color> {

    @Override
    public Color getObject() throws Exception {
        return new Color();
    }

    @Override
    public Class<?> getObjectType() {
        return Color.class;
    }

    @Override
    public boolean isSingleton() {
        return true;
    }
}
